// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2015-2016 Andrey Antukh <niwi@niwi.nz>
// Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>

/// This mixin allows you  to add styles to a specific Media query inside the style selector specifying which Breaking Point you want to choose.
/// @group Mixins
/// @parameter $point - This parameter decide which one of Breaking Point you want to use: "bp-desktop" (Desktop), "bp-tablet" (Tablet) and "bp-mobile" (Mobile).
@mixin bp($point) {
  $bp-mobile: "(min-width: 720px)";
  $bp-tablet: "(min-width: 1020px)";
  $bp-desktop: "(min-width: 1366px)";

  @if $point == mobile {
    @media #{$bp-desktop} {
      @content;
    }
  } @else if $point == tablet {
    @media #{$bp-tablet} {
      @content;
    }
  } @else if $point == desktop {
    @media #{$bp-mobile} {
      @content;
    }
  }
}

// Advanced positioning
// ----------------
@mixin position(
  $type,
  $top: $position-default,
  $right: $position-default,
  $bottom: $position-default,
  $left: $position-default
) {
  position: $type;
  $allowed_types: absolute relative fixed;
  @if not index($allowed_types, $type) {
    @warn "Unknown position: #{$type}.";
  }
  @each $data in top $top, right $right, bottom $bottom, left $left {
    #{nth($data, 1)}: nth($data, 2);
  }
}
@mixin absolute(
  $top: $position-default,
  $right: $position-default,
  $bottom: $position-default,
  $left: $position-default
) {
  @include position(absolute, $top, $right, $bottom, $left);
}
@mixin relative(
  $top: $position-default,
  $right: $position-default,
  $bottom: $position-default,
  $left: $position-default
) {
  @include position(relative, $top, $right, $bottom, $left);
}
@mixin fixed(
  $top: $position-default,
  $right: $position-default,
  $bottom: $position-default,
  $left: $position-default
) {
  @include position(fixed, $top, $right, $bottom, $left);
}

/// Center an element vertically and horizontally with an absolute position.
/// @group Mixins

@mixin centerer {
  @include absolute(50%, null, null, 50%);
  transform: translate(-50%, -50%);
}

/// This mixing allow you to add placeholder colors in all available browsers
/// @group Mixins

@mixin placeholder {
  &::-webkit-input-placeholder {
    @content;
  }

  &:-moz-placeholder {
    /* Firefox 18- */
    @content;
  }

  &::-moz-placeholder {
    /* Firefox 19+ */
    @content;
  }

  &:-ms-input-placeholder {
    @content;
  }
}

/// Allows you to visually
/// @group Mixins

@mixin hide-text {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
}

@mixin font-face($style-name, $file, $weight: unquote("normal"), $style: unquote("normal")) {
  $filepath: "/fonts/" + $file;
  @font-face {
    font-family: "#{$style-name}";
    src: url($filepath + ".woff2") format("woff2"), url($filepath + ".ttf") format("truetype");
    font-weight: unquote($weight);
    font-style: unquote($style);
  }
}

@mixin tooltipShow {
  &:hover {
    .icon-tooltip {
      display: block;
      left: 2rem;
      animation: tooltipAppear 0.2s linear;
    }
  }
  &.active {
    .icon-tooltip {
      display: block;
      left: 2rem;
      animation: tooltipAppear 0.2s linear;
    }
  }
}

@mixin text-ellipsis {
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

@mixin paragraph-ellipsis {
  text-overflow: ellipsis;
  overflow: hidden;
  position: relative;

  &::after {
    background-color: $color-gray-50;
    bottom: -3px;
    content: "...";
    padding-left: 10px;
    position: absolute;
    right: 2px;
  }
}
